你好,我是富士大顆 Aiko
今天來介紹 array 的 20 個 methods !
但首先要解釋一下 array 是什麼:
陣列(Array)是一種有順序的資料集合型態,可以用來儲存多個元素,這些元素可以是任何種類型的物件,包括數字、字串、符號、物件等。Ruby 的陣列是動態的,注意了這個是動態型別的概念!,所以可以根據需要不斷新增或刪除元素,並且陣列的大小可以根據其中包含的元素數量自動調整。
unshift(e): 在陣列開頭新增元素 e
arr = ["a", "i", "k", "o"]
puts arr.unshift("r")
#["r", "a", "i", "k", "o"]
push(e): 在陣列最後新增元素 e
arr = ["a", "i", "k", "o"]
puts arr.push("r")
#["a", "i", "k", "o", "r"]
其實還有更簡潔的寫法<<
arr << "r"
puts arr
#["a", "i", "k", "o", "r"]
shift: 刪除並回傳陣列的第一個元素
arr = ["a", "i", "k", "o"]
puts arr.shift
#a
puts arr
#["i", "k", "o"]
pop: 刪除並回傳陣列的最後一個元素
arr = ["a", "i", "k", "o"]
puts arr.pop
#o
puts arr
#["a", "i", "k"]
delete_at(n):刪除某索引 n 元素
arr = ["a", "i", "k", "o"]
puts arr.delete_at(3)
#["a", "i", "k"]
clear: 清空陣列的所有元素。
arr = ["a", "i", "k", "o"]
puts arr.clear
#[]
uniq: 創造一個不重複元素的新陣列
arr = ["aiko", "aiko", "33y"]
puts arr.uniq
#["aiko", "33y"]
sort: 創造一個升冪的新陣列
arr = ["a", "i", "k", "o"]
puts arr.sort
#["a", "i", "k", "o"] #(好好笑怎麼沒變啦 這個真的是新的雖然長得跟 arr 一樣)
reverse: 回傳陣列的反轉版本。
arr = ["a", "i", "k", "o"]
puts arr.reverse
#["o", "k", "i", "a"]
但 reverse!
會改變原陣列
arr = ["a", "i", "k", "o"]
puts arr.reverse!
#["o", "k", "i", "a"]
puts arr
#["o", "k", "i", "a"]
map / collect: 對陣列的每個元素操作並回傳一個新陣列。
arr = ["a", "i", "k", "o"]
puts arr.map{ |e| e + "r"}
#["ar", "ir", "kr", "or"]
select / filter: 根據操作篩選元素並回傳新陣列。
arr = ["a", "i", "k", "o"]
puts arr.filter{ |e| e == "a"}
#["a"]
reject: 根據操作排除該元素並回傳新陣列。
arr = ["a", "i", "k", "o"]
puts arr.reject{ |e| e == "a"}
#["i", "k", "o"]
empty?: 檢查陣列是否為空。
arr = ["a", "i", "k", "o"]
puts arr.empty?
#false
include?(e): 檢查陣列是否包含 e。
arr = ["a", "i", "k", "o"]
puts arr.include?("e")
#false
index(e): 回傳元素在陣列中的索引值,如果不存在則回傳 nil
。
arr = ["a", "i", "k", "o"]
puts arr.include?("e")
#nil
puts arr.include?("a")
#0
first(n): 回傳陣列的前 n 個元素。
arr = ["a", "i", "k", "o"]
puts arr.first(2)
#["a", "i"]
last(n): 回傳陣列的最後 n 個元素。
arr = ["a", "i", "k", "o"]
puts arr.last(2)
#["k", "o"]
length / size: 回傳陣列的元素數量。
arr = ["a", "i", "k", "o"]
puts arr.size
#4
each_with_index: 操作陣列的每個元素並且可以回傳索引值。
arr = ["a", "i", "k", "o"]
arr.each_with_index do |e, inx|
puts "Index #{inx}: array: #{e}"
end
#Index 0: array: "a"
#Index 1: array: "b"
#Index 2: array: "c"
#Index 3: array: "d"
跟 .each
不一樣哦,.each
獨立使用是無法像each_with_index
的
arr = ["a", "i", "k", "o"]
arr.each do {|e| puts e}
end
#"a"
#"i"
#"k"
#"o"
但是!!!.each.with_index
就可以當成each_with_index
同樣來取用 indexreduce
或 inject
: 使用操作對陣列的元素進行累積。
arr = [1, 2, 3, 4, 5]
puts arr.reduce(0) { |acc, cv| acc + cv }
#15
join(separator)
: 使用指定的分隔將陣列轉換為字串。
arr = ["Aiko", "is", "33y."]
puts arr.join(" ")
# "Aiko is 33y."
好皮 來不及介紹 hash 啦哈哈哈哈哈